var loadingTarget = 'body';
$(function() {
	$.ajaxSetup({
		type: "post",
	    dataType: "json",
	    loadingTarget: 'body'
		});
	$('body').ajaxComplete(function(){removeLoading();});
	$('body').ajaxSuccess(function(response,data,options){ajax_response(response,data,options)});
	$('body').ajaxError(function(event, request, settings,exception){
							
								if(request.status == '401'){
									window.location.href = PublicUrls['SIGNIN'];
								}else{
									showError(settings.url);
								}
								
							
						})

});

function ajax_response(response,data,options){
	if(data == null || data == '' || options.dataType != 'json'){
		return ;
	}

	
	data = eval("(" + data.responseText + ')');
	
	
	if(data.success != null && !data.success){
		if(data.errors != null){
			write_errors(data.errors);
		}
		
	}

	if(data.message != null && data.message != ''){
		$('<span>'+data.message+'</span>').modalpop({msg:true});
	}
}

function write_errors(errors){
	for(var i=0;i<errors.length;i++){
		var error_container = $('<div>');
		error_container.attr('id',errors[i].field+'-error');
		error_container.addClass('error_container');
		$('[id="'+errors[i].field+'-error"]').remove();
		var error = $('<span>');
		error.addClass('error');
		error.text(errors[i].message);
		error_container.append(error);
		$('*[name='+errors[i].field+']').after(error_container);
	}
}

function crear_overlay(target){
	// fondo transparente
    // creamos un div nuevo, con dos atributos
    var bgdiv = $('<div>').attr({
                            className: 'bgtransparent',
                            id: 'bgtransparent'
                            });
    
    // agregamos nuevo div a la pagina
    $(bgdiv).css({
   	 'position':'absolute',
       'left':0,
       'top':0,
       'background-color':'#dfdfdf',
       'opacity':0.75,
       'filter':'alpha(opacity=75)'});
    
    $(target).append(bgdiv);
    
    // obtenemos ancho y alto de la ventana del explorer
    var wscr = $(target).width();
    var hscr = $(target).height();
    
    //establecemos las dimensiones del fondo
    $('#bgtransparent').css("width", wscr);
    $('#bgtransparent').css("height", hscr);	
}

function showLoading(element){
    
	crear_overlay(element);
    // agregamos contenido HTML a la ventana modal
    $('#bgtransparent').after('<div id="loading" class="loading-indicator-overlay">'+
		   	'<div class="loading-indicator"></div>'+
			'</div>');
    
    center('loading',element);
    $('#loading').show();
}

function showError(msg){
    
	crear_overlay('body');
    // agregamos contenido HTML a la ventana modal
    $('#bgtransparent').after('<div id="error" class="json-error">'+
		   	'<div class="json-error">'+msg+ '</div>'+
			'</div>');
    
    center('error','body');
    $('#error').show();
}

function center(id,target){
   // dimensiones de la ventana del explorer 
   var wscr = $(target).width();
   var hscr = $(target).height();
   
   var wcnt = $('#'+id).width();
   var hcnt = $('#'+id).height();
   
   // obtener posicion central
   var mleft = ( wscr - wcnt ) / 2;
   var mtop = ( hscr - hcnt ) / 2;
   
   // estableciendo ventana modal en el centro
   $('#'+id).css("left", mleft+'px');
   $('#'+id).css("top", mtop+'px');
} 

       
function removeLoading(){
       // removemos divs creados
       $('#loading').remove();
       $('#bgtransparent').remove();
       loadingTarget = 'body';
}

function removeError(){
	   $('#error').remove();
       $('#bgtransparent').remove();
}
